Uncurrying for Termination
نویسندگان
چکیده
First-order applicative term rewrite systems provide a natural framework for modeling higher-order aspects. In this paper we present a transformation from untyped applicative term rewrite systems to functional term rewrite systems that preserves and reflects termination. Our transformation is less restrictive than other approaches. In particular, head variables in right-hand sides of rewrite rules can be handled. To further increase the applicability of our transformation, we present a version for dependency pairs.
منابع مشابه
Generalized and Formalized Uncurrying
Uncurrying is a termination technique for applicative term rewrite systems. During our formalization of uncurrying in the theorem prover Isabelle, we detected a gap in the original pen-and-paper proof which cannot directly be filled without further preconditions. Our final formalization does not demand additional preconditions, and generalizes the existing techniques since it allows to uncurry ...
متن کاملUncurrying for Innermost Termination and Derivational Complexity
First-order applicative term rewriting systems provide a natural framework for modeling higher-order aspects. In earlier work we introduced an uncurrying transformation which is termination preserving and reflecting. In this paper we investigate how this transformation behaves for innermost termination and (innermost) derivational complexity. We prove that it reflects innermost termination and ...
متن کاملFunction Spaces in the Category of Directed Suprema Preserving Maps1
provide the notation and terminology for this paper. Let F be a function. We say that F is uncurrying if and only if the conditions (Def. 1) are satisfied. (Def. 1)(i) For every set x such that x ∈ dom F holds x is a function yielding function, and (ii) for every function f such that f ∈ dom F holds F(f) = uncurry f. We say that F is currying if and only if the conditions (Def. 2) are satisfied...
متن کاملA verified framework for higher-order uncurrying optimizations
Function uncurrying is an important optimization for the efficient execution of functional programming languages. This optimization replaces curried functions by uncurried, multiple-argument functions, while preserving the ability to evaluate partial applications. First-order uncurrying (where curried functions are optimized only in the static scopes of their definitions) is well understood and...
متن کاملThe Characterization of the Continuity of Topologies1
The following propositions are true: (1) Let S, T be non empty relational structures and f be a map from S into T. Suppose f is one-to-one and onto. Then f · f −1 = id T and f −1 · f = id S and f −1 is one-to-one and onto. (2) Let X, Y be non empty sets, Z be a non empty relational structure, S be a non empty relational substructure of Z [: X,Y :] , T be a non empty relational substructure of (...
متن کامل